#ifndef Algebra_IndexMap_h
#define Algebra_IndexMap_h

#include "AlgebraModule.h"
#include <map>

SG_NAMESPACE_OPEN
namespace Algebra
{
    /**
     * @brief Mapping between the local indices and the unique global indices.
     *
     * This class represents the distribution index arrays across processes. An index array is
     * a contiguous collection of `N+1` indices `[0, 1, . . ., N]` that are distributed across
     *  `M` processes. On a given process, the IndexMap stores a portion of the index set using
     * local indices `[0, 1, . . . , n]`, and a map from the local indices to a unique global index.
     *
     * @see dolfinx/cpp/dolfinx/common/IndexMap.h
     *
     * @author nene
     * @date ‌Januray‌, 2025.
     */
    typedef std::map<Index_t, Index_t> IndexMap_t;
}  // namespace Algebra
SG_NAMESPACE_CLOSE

#endif  // Algebra_IndexMap_h